/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package modelos.daos;

import controladores.ManejadorBaseDatos;
import modelos.pojos.CheckInHabitacion;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.LinkedList;
import java.util.List;
import modelos.pojos.Reserva;

/**
 *
 * @author ricardo
 */
public class CheckInHabitacionDAO {

    private static Connection con;
    public static List<CheckInHabitacion> resultados;

    public static void crear(CheckInHabitacion checkInHabitacion) throws SQLException, Exception {

        ManejadorBaseDatos mbd = ManejadorBaseDatos.getInstancia();
        mbd.conectar();
        con = mbd.getConexion();

        if (con == null) {
            throw new SQLException("Ha ocurrido un error al intentar conectarse con la base de datos");
        }

        PreparedStatement pst = null;

        try {
            pst = con.prepareStatement("Insert Into CheckInHabitacion values(?,?,?,?,?,?)");
            pst.setString(1, null);
            pst.setInt(2, checkInHabitacion.getReservaHabitacion().getId());
            pst.setInt(3, checkInHabitacion.getEmpleado().getId());
            pst.setTimestamp(4, new Timestamp(checkInHabitacion.getFechaIn().getTime()));
            pst.setTimestamp(5, null);
            pst.setString(6, checkInHabitacion.getEstado() + "");
            pst.executeUpdate();
        } finally {
            if (pst != null) {
                pst.close();
            }
        }
    }

//    public static CheckInHabitacion consultar(ReservaHabitacion reservaHabitacion) throws SQLException {
//        ResultSet rs = null;
//        PreparedStatement pst = null;
//        CheckInHabitacion checkInHabitacion = null;
//
//        try {
//            ManejadorBaseDatos mbd = ManejadorBaseDatos.getInstancia();
//            mbd.conectar();
//            con = mbd.getConexion();
//            pst = con.prepareStatement("SELECT * FROM CheckInHabitacion where idReservaHabitacion = ?;");
//            pst.setInt(1, reservaHabitacion.getId());
//            rs = pst.executeQuery();
//
//            while (rs.next()) {
//                checkInHabitacion = CheckInHabitacion.cargarDatos(rs , );
//            }
//        } finally {
//            if (rs != null) {
//                rs.close();
//            }
//            if (pst != null) {
//                pst.close();
//            }
//            return checkInHabitacion;
//        }
//    }

    public static List consultarFacturables(Reserva reserva) throws SQLException {

        ResultSet rs = null;
        PreparedStatement pst = null;
        resultados = null;

        try {
            ManejadorBaseDatos mbd = ManejadorBaseDatos.getInstancia();
            mbd.conectar();
            con = mbd.getConexion();
            pst = con.prepareStatement("Select CheckInHabitacion.*, ReservaHabitacion.idHabitacion from CheckInHabitacion inner join ReservaHabitacion on ReservaHabitacion.id = CheckInHabitacion.idReservaHabitacion and CheckInHabitacion.estado='r' and ReservaHabitacion.idReserva = ?;");
            pst.setInt(1, reserva.getId());
            rs = pst.executeQuery();

            while (rs.next()) {
                if (resultados == null) {
                    resultados = new LinkedList<CheckInHabitacion>();
                }
                resultados.add(CheckInHabitacion.cargarDatos(rs, reserva.getCodigoReserva()));
            }
        } finally {
            if (rs != null) {
                rs.close();
            }
            if (pst != null) {
                pst.close();
            }
            return resultados;
        }
    }
}
